<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!--xtiger_start-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cn" lang="cn">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta http-equiv="x-ua-compatible" content="ie=7"/>
    <title>XNet framework 用户指南 - XNet framework中文手册|用户手册|用户指南|Wiki文档</title>
    <link rel="stylesheet" type="text/css" media="all" href="http://www.openxtiger.org/xtiger_guide/xtigerguide.css"/>
    <script type="text/javascript" src="http://www.openxtiger.org/xtiger_guide/js/nav.js"></script>
    <script type="text/javascript" src="http://www.openxtiger.org/xtiger_guide/js/prototype.lite.js"></script>
    <script type="text/javascript" src="http://www.openxtiger.org/xtiger_guide/js/moo.fx.js"></script>
    <script type="text/javascript" src="http://www.openxtiger.org/xtiger_guide/js/user_guide_menu.js"></script>

    <meta name="robots" content="all"/>
    <meta name="author" content="openxtiger xtiger"/>
    <meta name="description" content="XNet framework 中文手册, XNet framework 用户指南, XNet framework User Guide, Wiki 文档"/>
</head>
<body>
<!-- START NAVIGATION -->
<div id="nav">
    <div id="nav_inner">
        <script type="text/javascript">create_menu('http://www.openxtiger.org/xtiger_guide/');</script>
    </div>
</div>
<div id="nav2"><a href="javascript:void(0);" name="top" onclick="myHeight.toggle();"><img
        src="http://www.openxtiger.org/xtiger_guide/images/nav_toggle_darker.jpg" width="154" height="43" border="0"
        title="切换目录" alt="切换目录"/></a></div>
<div id="masthead">

    <table cellpadding="0" cellspacing="0" border="0" style="width:100%">
        <tr>
            <td width="350"><h1>XNet framework 用户指南 版本 1.0.0</h1></td>
            <td>编辑文档、查看近期更改请 <a href="http://hi.microsoul.com/home/do.php?ac=36724f73d2021ed6fb93c71956743feb">登录</a> 或 <a
                    href="http://hi.microsoul.com/home/do.php?ac=f15686a09baf2e7ee241541f4678254c">注册</a> 　<a
                    href="http://hi.microsoul.com/home/do.php?ac=lostpasswd">找回密码</a></td>
            <td id="breadcrumb_right"><a href="http://www.openxtiger.org/xtiger_guide/toc.html">目录页</a></td>

        </tr>
    </table>
</div>
<!-- END NAVIGATION -->
<!-- START BREADCRUMB -->
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
    <tr>
        <td id="breadcrumb">
            <a href="http://www.openxtiger.org" target="_blank">开源小老虎</a>&nbsp;&#8250;&nbsp;XNet framework 用户指南
        </td>
        <td  class="searchbox">搜索用户指南</td>
        <td  class="searchbox1" width="340">
            <script type="text/javascript"><!--
              google_ad_client = "pub-9585817794275200";
              google_ad_format = "configurable_sdo";
              google_link_target = 2;
              google_color_bg = "ffffff";
              google_color_link = "000000";
              google_color_text = "000000";
              google_encoding = "UTF-8";
              google_ad_channel = "4156786271";
              google_box_len = 31;
              google_ad_height = 30;
              google_ad_width = 330;
//-->
            </script>

            <script type="text/javascript"
              src="http://pagead2.googlesyndication.com/pagead/show_sdo.js">
            </script>
        </td>
    </tr>
</table>
<!-- END BREADCRUMB -->
<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
    <a href="http://www.openxtiger.org/xtiger_guide/index.html">查看原文</a>

</div>
<!--<br clear="all" />-->
<div class="center"><a href="http://www.openxtiger.org" target="_blank"><img src="http://hi.microsoul.com/images/logo.gif" height="65" width="135" border="0" alt="嗨！微企"/></a></div>
<!--xtiger_end-->

<!-- START CONTENT -->
<div id="content">
    <h1>视图</h1>

    <p>简而言之，一个视图就是一个网页，或是网页的部分，如头部，底部，侧边栏等等。事实上，如果你需要这种层次类型，视图可以很灵活的嵌入到其他视图中。</p>
    <h2>创建视图</h2>
    使用你的文本编辑器，创建一个名为 showUser.html.php 的文件，写入以下代码：
    <pre>
        &lt;html&gt;
        &lt;head>&lt;title&gt;toLogin&lt;/title&gt;&lt;/head&gt;
        &lt;body&gt;
        &lt;div id="msg"&gt;
            ${msg}
        &lt;/div&gt;
        &lt;form action="a.html#{/login/check.html}#" method="post"&gt;
            name:&lt;input name="username" value="${username}"/&gt;  &lt;br/&gt;
            pswd:&lt;input name="pswd"/&gt;   &lt;br/&gt;
            &lt;input type="submit"/&gt;
        
        &lt;/form&gt;

        &lt;/body&gt;
        &lt;/html&gt;
    </pre>
    <p>然后保存文件到 /WEB-INF/views/ 文件夹。</p>
    <h2>视图保留字</h2>

    <ol>
    <li><dfn>${  }</dfn>：变量输出</li>
    <li><dfn>#{  }#</dfn>：动态URL转换</li>
    <li><dfn>{@  @}</dfn>：执行PHP语句</li>
    <li><dfn>{!  }</dfn>：语言，<dfn>{!#  }</dfn>：语言包含，<dfn>{!&  }</dfn>：动态语言引入<dfn>{!@  }</dfn>：语言定义</li>
    <li><dfn>{=  }</dfn>：输出</li>
    <li><dfn>{#  }</dfn>：包含</li>
    <li><dfn>{&  }</dfn>：引入</li>

    <li><dfn>{include }</dfn>：动态引入PHP代码</li>
    <li><dfn>{loop  pool}</dfn>,<dfn>{loop  /loop}</dfn>：循环</li>
    <li><dfn>{if  fi}</dfn>,<dfn>{if  /if}</dfn>,<dfn>{elseif  fi}</dfn>,<dfn>{else  fi}</dfn>：条件</li>
    <li><dfn>{macro macro}</dfn>：自定义过程</li>
    <li><dfn>{model }</dfn>：直接引用模型</li>
    </ol>
    <h2>载入视图</h2>
    在Action中，你可以通过返回视图的名称（以上为showUser），即可装载视图，注意：.html.php 文件的扩展名(后缀名)没有必要专门写出。
    <pre>
    function hi_user_execute($x, $uid, $username='')  {
         $load = $x();
         $m = $load('model','blogmodel');

         if($username !=='' ) {
             $x('username',$username);
             <kbd>return 'showUser';</kbd>
         }
    }
    </pre>
    <h2>用子文件夹存储视图</h2>
    <p>如果你想让文件更有组织性,你也可以用子文件夹来存储你的视图文件.. 当你在载入视图时,必须加上子文件夹的名字. 示例如下:</p>
    <code>
        return "<kbd>folder_name</kbd>/<var>file_name</var>";
    </code>
    <h2>给视图添加动态数据</h2>
    <p>数据通过控制器传入的第一个参数（function hi_user_execute(<kbd>$x</kbd>, $uid, $username='')），将数据传入视图 , 使用示例:</p>
    <code>
        $x('username',$username); <br/>
        $x(array('a'=>'1','b'=>'2'));
    </code>
    <p>在视图中即可使用$username、$a和$b访问数据。</p>
    <h2>注释</h2>
    <code>
        <kbd>&lt;!--/*</kbd> 这是一个注释--&gt;<br/>
        &nbsp;&nbsp;被注释内容<br/>
        &lt;!--<kbd>*/--&gt;</kbd><br/>
    </code>
    <p>你可以通过以上方式对代码进行注释。即<kbd>&lt;!--/*</kbd> <kbd>*/--&gt;</kbd></p>
    <h2>运行PHP代码</h2>
    <p>你可以通过<kbd>&lt;!--{@</kbd> PHP代码;<kbd>}--&gt;</kbd>的方式直接运行PHP代码。</p>
    <h2>直接输出</h2>
    <p>你可以通过<kbd>&lt;!--{=</kbd> PHP代码<kbd>}--&gt;</kbd>的方式直接输出。</p>
    <h2>引入视图</h2>
    <p>你可以通过<kbd>&lt;!--{#</kbd> 视图路径<kbd>}--&gt;</kbd>的方式引入视图。</p>
    <h2>变量</h2>
    <p>你可以通过<kbd>${</kbd> 变量名 <dfn>??</dfn> 条件1 <dfn>!</dfn> 条件2<kbd>}</kbd>的方式输出变量值。</p>
    <p>注：<dfn>?</dfn>：表示判断变量是否设置，<dfn>??</dfn>：表示判断变量是否设置并且不为空</p>
    <h2>结构语句</h2>
    <h3>条件语句</h3>
    <p>你可以能过下列形式创建条件语句。</p>
    <pre>
  <kbd>&lt;!--{if</kbd> 条件表达式 <kbd>}--&gt; </kbd>
        条件体;
    <kbd>&lt;!--{else}</kbd>
         其他条件;
    <kbd>{fi}--&gt </kbd>
        
  <kbd>&lt;!--{if</kbd> 条件表达式 <kbd>}--&gt; </kbd>
        条件体;
    <kbd>&lt;!--{elseif</kbd> 条件表达式 <kbd>}</kbd>
            嵌套条件;
         <kbd>{else}</kbd>
            其他条件;
         <kbd>{fi}</kbd>
    <kbd>{fi}--&gt </kbd></pre>
     <h3>循环语句</h3>
    <p>你可以能过下列形式创建循环语句。</p>
    <pre>
  <kbd>&lt;!--{loop</kbd> <dfn>1<=10 $i+=2</dfn> / <dfn>lists value</dfn> / <dfn>lists key value</dfn> <kbd>}--&gt; </kbd>
        循环体;&lt;!--{break 条件}--&gt;&lt;!--{continue 条件}--&gt;
   <kbd>&lt;!--{pool}--&gt </kbd></pre>
    <ol>
    <li><dfn>1<=10 $i+=2</dfn>:表示$i从1开始循环到10并递增2，注意：1<=10之间不能含空格，$i+=2之间不能含空格。</li>
    <li><dfn>lists value</dfn>:表示循环lists，值为value</li>
    <li><dfn>lists key value </dfn>:表示循环lists，键值为key，值为list</li>
    <li><samp>value_index</samp>:表示循环计数。</li>
    </ol>
    <h2>Macro</h2>

    <p>通过设置macro，可将视图中，相同的片断组合起来，相当于php中的函数，其还有一个比较有特色的是，可以替换HTML标记中的属性值。设置的格式为：</p>
    <pre>
  <kbd>&lt;!--{macro</kbd>
        <samp>xtp_1:</samp>
            macro体;
        <samp>xtp_2:</samp>
            macro体;
   <kbd>macro}--&gt </kbd></pre>

    <p>替换HTML标记的属性值：</p>

    <pre>
 &lt;img src="microsoul.jpg" <dfn><kbd>xtp="1"</kbd> style="color:red" </dfn>/&gt;</pre>
    <p>其中<kbd>xtp="1"</kbd>以后的属性（包括<kbd>xtp="1"</kbd>）将被macro中<samp>xtp_1:</samp>下片断替换。</p>

    <p>替换相同片断：</p>
    <pre>
 <kbd>&lt;--{xtp_1}--&gt;</kbd></pre>
    <p>其中<kbd>&lt;--{xtp_1}--&gt;</kbd>将被macro中<samp>xtp_1:</samp>下片断替换。</p>

    <p>&nbsp;</p>

</div>

<!-- END CONTENT -->
<div id="footer">
    <p>
        <a href="http://www.openxtiger.org/xtiger_guide">页首</a>
    </p>

    <p>XNet framework &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2009 &nbsp;&middot;&nbsp;
        <a href="http://openxtier.org/">openXtiger Org.</a></p>

</div>
<script type="text/javascript">
    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
    try {
        var pageTracker = _gat._getTracker("UA-8286166-6");
        pageTracker._trackPageview();
    } catch(err) {
    }</script>
</body>
</html>